[Design pattern]: 设计模式相关系列
介绍
概念: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
应用场景: 统一处理器的入口,由一个公共的入口来执行各种各样的请求
好处: 扩展方便,入口统一
CODE
处理器的接口定义
1 | package note.com.Command; |
定义各种情况的处理实现
1 | package note.com.Command; |
1 | package note.com.Command; |
1 | package note.com.Command; |
1 | package note.com.Command; |
1 | package note.com.command; |
实现一个控制处理器的分配类
1 | package note.com.command; |
测试类
1 | package note.com.Command; |
结果
1 | 我这里有一个生物需要处理 |
由此,所有的待处理都从MainCommand入口进行处理,不需要知道具体是谁处理了.另外,有新增的物种需要处理时只需要扩张ICommand的实现,并且把该实现收MainCommand管理即可. 例子中没有将实际处理类与MainCommand进行分离,想要这么做也很简单,方式有很多,例如实现配置文件方式加载.
命令模式与职责链模式的区别
比较前文的职责链例子与本篇中的命令例子,命令模式的所有Command处理类最后由一个第三方的类来管理与分配具体的执行类.而职责链是直接请求到第一个处理类上,依次往下传递,直到有人处理.
####用两张图说明他们的工作方式:
责任链工作模式:
命令模式工作模式: